#ifndef ECATCONFIG_H
#define ECATCONFIG_H


//总线配置//最大支持设备
#define D_MAX_SLAVES  1280
// 机器人最多几个
//#define D_MAX_ROBOTS  16

//io读写间隔 1ms
//#define D_IO_RW_TIME 1

//预分配vector大小 ，避免内存多次拷贝
#define D_TMP_VECTOR_SIZE 128
//cpu set
#define  D_CpuIndex   0
//
#define D_IO_USE_VECTOR 0


//将算法给过来的数据写到文件
#define D_WRITE_SERVO_DATA_TO_FILE 0
#if D_WRITE_SERVO_DATA_TO_FILE
#define D_TMP_SERVO_DATA_FILE  "./servodata.txt"
#endif

// 启用DC同步功能
#define D_USE_DC_SYNC  1

//清能德创电机１ｍs周期偶尔卡。
//变位机项目汇川伺服使用的是本方法。运行１年，没听客户反馈ＷＫＣ错误。
#define D_USE_DC_MASTER_METHOD  0

//清能德创会报dc不匹配的超时错误，导致主站WKC错误，通过0x20d3＝０可以屏蔽报错。偶尔也会卡顿。0x20d3＝100加了平滑预测控制还是会卡１ms
//汇川，STEP,同川和上面品牌一样现象。
//有时候跑了７天都没有报错，２０１９．６．１０号　清能德创scara跑了８小时，报跟随误差过大，然后wkc错误。
#define D_USE_DC_SLAVE1_METHOD  1

//打印 servo　motor data and io module data, and time stamp
#define D_IF_DEBUG 1


#ifdef D_USE_XENOMAI
#include <rtdk.h>
#else
#define rt_printf printf
#endif


/* 946684800 is the number of seconds between 1/1/1970 and 1/1/2000 */
#define VHD_TO_UNIX_EPOCH_SECONDS UINT64_C(946684800)
//2000年到现在总纳秒数
#define EC_TIMEVAL2TCNANO(TV) \
    (((TV).tv_sec - 946684800ULL) * 1000000000ULL + (TV).tv_nsec)

//925123612
//946684800

#define NSEC_PER_SEC 1000000000


//主站特有配置
//#ifdef D_USE_IGH
/***************************************************************************
 创建者: 华磊
 开始时间: 2018.8.14
 copyright: (C) 华友高科
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) 李文友 2017.5.8 类的具体实现代码编写

 ***************************************************************************
 *  @file x.h
 *  功能:
 *
 *                                                                         *
 ***************************************************************************/
#include <ecrt.h>

//#elif D_USE_VREP

//#elif D_USE_ACONTIS

//#include <AtEthercat.h>

#define MAX_LINKLAYER 5
#if (defined EC_SOCKET_SUPPORTED)
/* the RAS server is necessary to support the EC-Engineer or other remote applications */
#define ATEMRAS_SERVER
#endif
#define REMOTE_WD_TO_LIMIT          10000
#define REMOTE_CYCLE_TIME           2

#if defined LINUX &&(!defined XENOMAI)
#define AUXCLOCK_SUPPORTED
#endif

//#endif

/*#endif*/ //##end##//D_USE_ACONTIS/D_USE_VREP/D_USE_IGH
#define GLOBAL_VIRTUAL_DEVICE_PATH     "globalConfig/virtualDevice/"
#define GLOBAL_ECAT_BUS_PATH     "globalConfig/ethercat/"
#define GLOBAL_MODBUS_RTU_PATH     "globalConfig/modbusRtuDevice/"
#define GLOBAL_MODBUS_TCP_PATH     "globalConfig/modbusTcpDevice/"
#define GLOBAL_CANOPEN_PATH     "globalConfig/canbusDevice/"

#define GLOBAL_ROBOT_CONFIG     "globalConfig/robots.xml"




#endif // ECATCONFIG_H
